#
#
# Copyright TEDECO, 2009. http://tedeco.fi.upm.es
#
# This file is part of kumenya.
#
# Kumenya is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Kumenya is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
#
#
#
<?php
class Matricula
{
	
	const AMBITO = Matriculacion;

	static public function PrepararDatosMatricula ($datos, $nombreTabla) {
		$datos[Uid . $nombreTabla] = $datos[Uid];
		unset ($datos[Uid]);
		return $datos;
	}

	static public function getCampos () {
		$gestorBD = new GestorBD();
		$campos = $gestorBD->CamposTabla (TablaDeMatriculas,self::AMBITO);
		$campos = Interfaz::QuitarCampos ($campos, Mencion);
		$campos = Interfaz::QuitarCampos ($campos, Porcentaje);
		$campos = Interfaz::QuitarCampos ($campos, Convalidada);
		return $campos;
	}		

	static public function getCamposMencion () {
		$gestorBD = new GestorBD();
		$campos = $gestorBD->CamposTabla (TablaDeMatriculas,self::AMBITO);
		$campos = Interfaz::QuitarCampos($campos,Anio);
		$campos = Interfaz::QuitarCampos($campos,DocumentacionCompleta);
		$campos = Interfaz::QuitarCampos($campos,BecaGobierno);
		$campos = Interfaz::QuitarCampos($campos,Observaciones);
		$campos = Interfaz::QuitarCampos ($campos, Convalidada);
		return $campos;
	}		

	static public function getNoModificablesMencion () {
		return Interfaz::TipoDeCampos(Interfaz::QuitarCampos(self::getCamposMencion (),Mencion),Tipo);
	}		
	
	static public function getCamposConvalidacion () {
		$gestorBD = new GestorBD();
		$campos = $gestorBD->CamposMultiplesTablas("MostrarAlumnosConvalidables", self::AMBITO, TablaDeCarreras, FALSE);
		return $campos;
	}

	static public function DarDeAlta ($camposRellenos = array()) {
		$gestorBD = new GestorBD();
		$exito = $gestorBD->EjecutarProcedimiento ('AltaDeMatricula',self::AMBITO,$camposRellenos);		
		if ($exito)
			Interfaz::Resultado($gestorBD->ObtenerResultado());
		else
			Interfaz::Error($gestorBD->ObtenerError());
		return $exito;		
	}

	static public function DarDeAltaConvalidacion ($camposRellenos = array()) {
		$gestorBD = new GestorBD();
		$exito = $gestorBD->EjecutarProcedimiento ('AltaMatriculaConvalidacion',self::AMBITO,$camposRellenos);		
		if ($exito)
			Interfaz::Resultado($gestorBD->ObtenerResultado());
		else
			Interfaz::Error($gestorBD->ObtenerError());
		return $exito;		
	}
	
	static public function AgregarAsignatura ($camposRellenos = array()) {
		$gestorBD = new GestorBD();
		return $gestorBD->EjecutarProcedimiento ('AltaDeMatriculaAsignatura',self::AMBITO,$camposRellenos);
	}
	
	static public function CriteriosConsulta () {
		$gestorBD = new GestorBD();
		$criterios = $gestorBD->CriteriosConsulta ('ConsultaMatriculas',self::AMBITO);
		if (empty($criterios[Tipo])) {
			Interfaz::Error($gestorBD->ObtenerError());
			return FALSE;
		}
		return $criterios;
	}		

	static public function Consultar ($criterios = array()) {
		$gestorBD = new GestorBD();
		$tabla = $gestorBD->EjecutarProcedimientoConsulta ('ConsultaMatriculas',self::AMBITO,$criterios);
		if (!is_array($tabla)) {
			Interfaz::Error($gestorBD->ObtenerError());
			return FALSE;
		}
		return $tabla;	
	}

	static public function ConsultarUltima ($criterios = array()) {
		$gestorBD = new GestorBD();
		$exito = $gestorBD->EjecutarProcedimiento ('DarMatricula',self::AMBITO,$criterios);
		if ($exito)
			Interfaz::Resultado($gestorBD->ObtenerResultado());
		else
			Interfaz::Error($gestorBD->ObtenerError());
		return $exito;		
	}

	static public function ConsultarConvalidaciones ($criterios = array()) {
		$gestorBD = new GestorBD();
		$tabla = $gestorBD->EjecutarProcedimientoConsulta ('ConsultaDeConvalidacion',self::AMBITO,$criterios);
		if (!is_array($tabla)) {
			Interfaz::Error($gestorBD->ObtenerError());
			return FALSE;
		}
		return $tabla;	
	}

	static public function VerDetalles ($identificador) {
		$gestorBD = new GestorBD();
		$tabla = $gestorBD->EjecutarProcedimientoConsulta ('DetalleMatricula',Matriculacion, $identificador);
		if (!is_array($tabla)) {
			Interfaz::Error($gestorBD->ObtenerError());
			return FALSE;
		}
		return $tabla;
	}

	static public function VerDetallesModificacion ($identificador) {
		$gestorBD = new GestorBD();
		$tabla = $gestorBD->EjecutarProcedimientoConsulta ('DetallesModificacionMatricula',self::AMBITO, $identificador);
		if (!is_array($tabla)) {
			Interfaz::Error($gestorBD->ObtenerError());
			return FALSE;
		}
		$tabla = $tabla[0];
		return $tabla;
	}

	static public function VerDetallesMencion ($identificador) {
		$gestorBD = new GestorBD();
		$tabla = $gestorBD->EjecutarProcedimientoConsulta ('DetallesMencionMatricula',self::AMBITO, $identificador);
		if (!is_array($tabla)) {
			Interfaz::Error($gestorBD->ObtenerError());
			return FALSE;
		}
		$tabla = $tabla[0];
		return $tabla;
	}

	static public function VerDetallesConvalidacion ($identificador) {
		$gestorBD = new GestorBD();
		$tabla = $gestorBD->EjecutarProcedimientoConsulta ('DetalleMatriculaConvalidacion',Matriculacion, $identificador);
		if (!is_array($tabla)) {
			Interfaz::Error($gestorBD->ObtenerError());
			return FALSE;
		}
		return $tabla;
	}

	static public function Modificar ($camposRellenos = array()) {
		$gestorBD = new GestorBD();
		$exito = $gestorBD->EjecutarProcedimiento ('ModificacionDeMatricula',self::AMBITO,$camposRellenos);		
		if ($exito)
			Interfaz::Resultado($gestorBD->ObtenerResultado());
		else
			Interfaz::Error($gestorBD->ObtenerError());
		return $exito;		
	}

	static public function ModificarMencion ($camposRellenos = array()) {
		$gestorBD = new GestorBD();
		$exito = $gestorBD->EjecutarProcedimiento ('ModificacionMencionMatricula',self::AMBITO,$camposRellenos);		
		if ($exito)
			Interfaz::Resultado($gestorBD->ObtenerResultado());
		else
			Interfaz::Error($gestorBD->ObtenerError());
		return $exito;
	}

	static public function Contabilizar ($camposRellenos = array()) {
		$gestorBD = new GestorBD();
		$exito = $gestorBD->EjecutarProcedimiento ('DeudaInscripcion',Contabilidad,$camposRellenos);		
		if ($exito) {
			$exito = $gestorBD->EjecutarProcedimiento ('DeudaMatricula',Contabilidad,$camposRellenos);
			if ($exito)
				return $exito;
		}
		Interfaz::Error($gestorBD->ObtenerError());
		return $exito;		
	}
}